今天將添加一個儲蓄目標的功能,讓使用者可以設定他們的財務目標,像是存錢計畫,並且在接近目標截止日期時,應用會提供提醒。
首先需要為儲蓄目標設置一個資料模型,儲存目標金額、當前儲蓄、截止日期等資訊。
js
const mongoose = require('mongoose');
const goalSchema = new mongoose.Schema({
userId: { type: mongoose.Schema.Types.ObjectId, ref: 'User' },
amount: { type: Number, required: true },
currentSavings: { type: Number, default: 0 },
deadline: { type: Date, required: true }
});
module.exports = mongoose.model('Goal', goalSchema);
在 routes 中新增一個路由,允許使用者設定和查看儲蓄目標。
js
const express = require('express');
const router = express.Router();
const { setSavingGoal, getGoals } = require('../controllers/goalController');
router.post('/goals', setSavingGoal);
router.get('/goals', getGoals);
module.exports = router;
接著要撰寫儲蓄目標的控制器來處理目標設定和查詢邏輯。
js
const Goal = require('../models/Goal');
const setSavingGoal = async (req, res) => {
const { amount, deadline } = req.body;
try {
const goal = new Goal({
userId: req.user.id,
amount,
deadline
});
await goal.save();
res.status(201).json(goal);
} catch (error) {
res.status(500).json({ message: 'Error setting saving goal', error });
}
};
const getGoals = async (req, res) => {
try {
const goals = await Goal.find({ userId: req.user.id });
res.status(200).json(goals);
} catch (error) {
res.status(500).json({ message: 'Error retrieving goals', error });
}
};
module.exports = { setSavingGoal, getGoals };
使用 node-cron 或類似的排程工具來實現儲蓄目標的定時提醒功能。
安裝 node-cron:
bash
npm install node-cron
用戶可以透過 /goals 路由設定儲蓄目標。讓應用每次登錄或定期檢查是否有目標即將到期,並通過電子郵件或應用通知提醒用戶。
使用 node-cron 來實作定時任務,定期檢查目標到期情況:
js
cron.schedule('0 9 * * *', async () => {
const goals = await Goal.find();
goals.forEach(goal => {
if (goal.deadline - Date.now() < 7 * 24 * 60 * 60 * 1000) {
console.log(`Reminder: Your savings goal is approaching its deadline.`);
}
});
});
今天把應用添加了儲蓄目標與提醒功能,這讓使用者可以設定他們的財務目標,並接收即將到期的提醒,從而促進更高效的財務規劃。這個功能可以讓應用更具互動性和實用性,有助於激勵用戶完成儲蓄目標。